{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from openai import OpenAI\n",
    "\n",
    "client = OpenAI(\n",
    "    api_key=\"sk-0e687ddcf0164a6fb66c1096447223c4\",  # 阿里百炼大模型API获取：https://bailian.console.aliyun.com/?apiKey=1#/api-key\n",
    "    base_url=\"https://dashscope.aliyuncs.com/compatible-mode/v1\" # 使用文档：https://help.aliyun.com/zh/model-studio/getting-started/what-is-model-studio\n",
    ")\n",
    "\n",
    "def llm(system_prompt, user_query):\n",
    "\n",
    "    completion = client.chat.completions.create(\n",
    "        model=\"deepseek-r1-distill-qwen-32b\", # deepseek-r1, deepseek-r1-distill-qwen-32b  qwen2.5-14b-instruct 模型列表：https://help.aliyun.com/zh/model-studio/getting-started/models\n",
    "        messages=[{'role': 'system', 'content': system_prompt},\n",
    "                  {'role': 'user', 'content': user_query}],\n",
    "        )\n",
    "    return completion.choices[0].message"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "--response--\n",
      "<think>\n",
      "\n",
      "</think>\n",
      "\n",
      "今天中午可以考虑以下几种选择：\n",
      "\n",
      "1. **中式快餐**：如宫保鸡丁、回锅肉等，既美味又快捷。\n",
      "2. **西式简餐**：比如三明治、沙拉，搭配一些蔬菜和蛋白质。\n",
      "3. **健康轻食**：例如糙米饭配蒸蔬菜和豆腐，营养均衡。\n",
      "4. **地方特色小吃**：如重庆小面、陕西肉夹馍等，体验不同风味。\n",
      "\n",
      "如果你有特别的口味偏好或饮食限制，可以告诉我，我可以帮你推荐更合适的选择！\n"
     ]
    }
   ],
   "source": [
    "import ollama\n",
    "\n",
    "client = ollama.Client(host='http://192.168.20.43:11434')\n",
    "\n",
    "def llm(sys_prompt, user_prompt):\n",
    "\n",
    "    response = client.chat(\n",
    "        model='deepseek-r1:32b', \n",
    "        # options可以省略，使用默认\n",
    "        options = {\n",
    "            'temperature': 0.1, \n",
    "            'top_p': 0.9, \n",
    "            'max_tokens': 1024, \n",
    "            'num_ctx':32768 \n",
    "            },\n",
    "        messages=[{'role': 'system', 'content': sys_prompt},\n",
    "                  {'role': 'user', 'content': user_prompt}],\n",
    "        )\n",
    "    output = response['message']['content']\n",
    "    return output\n",
    "\n",
    "# 测试\n",
    "response = llm(\"\", \"今天中午吃什么好？\")\n",
    "print(\"\\n--response--\")\n",
    "print(response)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'<think>\\n嗯，我现在要解决的问题是如何识别高后果区。根据用户提供的搜索结果，我需要仔细分析这些上下文，找出相关的信息，并整理出一个清晰的步骤或方法。\\n\\n首先，看看每个上下文的内容：\\n\\n- 上下文1主要讲的是管道建设期的完整性管理，提到了在可行性研究和设计阶段需要进行高后果区识别和风险评价，以减少风险。这里提到要识别高后果区和主要风险因素，并采取相应的控制措施。这可能涉及到初步的识别方法和一些基本要求。\\n\\n- 上下文2讨论了油田集输管道检测评价及修复技术导则，特别是关于Ⅲ类管道的检测评价策略。其中提到了高后果区识别和风险评价的方法，包括定性风险评价，并且详细说明了内腐蚀、外腐蚀检测以及压力试验等步骤。这部分可能对具体的检测方法有帮助。\\n\\n- 上下文3详细描述了集输油管道高后果区的识别标准和流程。这里明确列出了哪些区域属于高后果区，比如四级地区、三级地区，村庄、乡镇、道路、自然保护地、水源地等。还提到了资料收集、地区等级划分、统计村庄、道路、自然保护地和水源地，最后进行高后果区识别，并记录相关结果。\\n\\n接下来，我需要将这些信息整合起来，形成一个系统的识别步骤：\\n\\n1. **确定标准**：根据上下文3，高后果区的标准包括管道经过的四级或三级地区，两侧200米内有村庄、乡镇等聚居点，50米内有高速公路、铁路等，以及自然保护地和水源地。这些是关键的判断依据。\\n\\n2. **资料收集**：需要收集管道的基本信息，如名称、规格、设计压力等，还要有反映管道走向的测绘图或带状图。这一步确保后续分析有可靠的数据支持。\\n\\n3. **地区等级划分**：按照GB50253-2014标准，将管道沿线划分为四个地区等级，主要依据居民户数和建筑物密集程度。这有助于确定哪些区域风险更高。\\n\\n4. **统计周边要素**：分别统计村庄、乡镇的聚居户数，道路和易燃易爆场所的位置，以及自然保护地和水源地的情况。这些数据帮助识别潜在的高后果区。\\n\\n5. **高后果区识别**：由熟悉管道沿线情况的专业人员进行，根据上述标准判断哪些区域属于高后果区，并记录起止点、长度等详细信息。\\n\\n6. **风险评价与控制措施**：结合上下文1和2的内容，在识别出高后果区后，需要进行风险评价，采取相应的减缓措施，如设置安全预警系统或泄漏监测系统，优化管道设计以满足检测要求，考虑城市发展规划的影响，并科学选择防腐蚀方法。\\n\\n在思考过程中，我可能会遗漏一些细节，比如具体的检测方法和修复策略。但根据用户的问题，主要是识别高后果区的步骤，所以重点放在标准、资料收集、统计和识别流程上。同时，确保引用正确的上下文编号，避免重复引用同一个内容，并且在适当的位置插入引用标记。\\n\\n最后，总结出一个结构化的回答，涵盖各个关键点，并在每个部分引用相关的上下文来源。\\n</think>\\n\\n高后果区的识别是管道完整性管理中的重要环节，旨在确定管道沿线可能对人员、环境或财产造成重大影响的区域。以下是基于搜索结果中提供的信息，综合整理的高后果区识别方法和步骤：\\n\\n---\\n\\n### 1. **明确高后果区的定义与标准**\\n高后果区是指管道经过的特定区域，这些区域因人口密集、环境敏感或其他因素，可能在管道发生泄漏或事故时造成严重后果。根据相关规范，以下情况可被认定为高后果区：\\n- 管道经过的四级地区（居民户数较多的区域）；\\n- 管道经过的三级地区；\\n- 管道两侧各200米内有聚居户数在50户或以上的村庄、乡镇等；\\n- 管道两侧各50米内有高速公路、国道、省道、铁路及易燃易爆场所等；\\n- 管道两侧各200米内有湿地、森林、河口等国家自然保护地区；\\n- 管道两侧各200米内有水源、河流、大中型水库[citation:3]。\\n\\n---\\n\\n### 2. **资料收集**\\n在进行高后果区识别之前，需要收集以下基础资料：\\n- 管道名称、规格、设计压力及最大允许操作压力（MAOP）；\\n- 能反映管道走向的资料，如管道测绘图或带状图[citation:3]。\\n\\n---\\n\\n### 3. **地区等级划分**\\n根据管道沿线居民户数和建筑物密集程度，将区域划分为四个等级。具体划分标准可参考GB50253-2014《输油管道工程设计规范》附录F[citation:3]。\\n\\n---\\n\\n### 4. **统计周边要素**\\n对管道沿线的周边要素进行详细统计：\\n- **村庄、乡镇统计**：统计管道两侧各200米内有无聚居户数在50户或以上的村庄、乡镇；\\n- **道路及易燃易爆场所统计**：统计管道两侧各50米内是否有高速公路、国道、省道、铁路及易燃易爆场所；\\n- **自然保护地区及水源地统计**：统计管道两侧各200米内是否有湿地、森林、河口等国家自然保护地区，以及是否有水源、河流或大中型水库[citation:3]。\\n\\n---\\n\\n### 5. **高后果区识别**\\n根据上述统计结果和标准，由熟悉管道沿线情况的专业人员进行高后果区的识别。识别结果应包括：\\n- 高后果区管段的起止点；\\n- 管段长度；\\n- 管段描述（如地形、周边环境等）；\\n- 减缓措施建议[citation:3]。\\n\\n---\\n\\n### 6. **动态更新**\\n高后果区的位置和范围会随着管道周边人口和环境的变化而改变，因此需要定期重新评估和更新识别结果[citation:3]。\\n\\n---\\n\\n### 总结\\n通过以上步骤，可以系统地识别出管道沿线的高后果区，并采取相应的风险控制措施。这些措施包括设置安全预警系统或泄漏监测系统、优化管道设计以满足检测要求等，从而降低事故风险，保障人员和环境的安全[citation:1][citation:2][citation:3]。\\n\\n如果需要更详细的技术指导，可以参考相关技术导则或规范文件。'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "query = \"如何识别高后果区\"\n",
    "context = \"\"\"\n",
    "[context 1 begin]\\n      \\\"title\\\": \\\"a3178x1tmk1s:a31x0gaukoow:a3203ehok7pc:1.中国石油天然气股份有限公司油气田管道和站场完整性管理规定.docx\\\",\\n      \\\"content\\\": \\\"管道建设期的完整性管理\\n可行性研究和设计阶段完整性管理要求如下：\\n（一）应采用高后果区识别和风险评价技术，识别高后果区和主要风险因素，以减少人口密集、环境敏感区段，并先期规避或减缓腐蚀、地质灾害、占压、第三方破坏风险。\\n（二）应充分结合安全、环境影响、职业病危害和地质灾害等专项评价和安全设施设计、消防建审提出的风险控制结论，从管道材质、管道防腐、焊缝检测、工艺参数、工艺流程、自控水平等方面提出有针对性的风险控制措施。\\n（三）通过人口密集区、环境敏感区等需要重点保护地段的管道，根据具体情况，可论证设置安全预警系统或泄漏监测系统。\\n（四）根据不同类型管道推荐的检测方法，配套设计相应的工艺设施。推荐采用智能内检测的管道应设置内检测器收发装置,管道设计应满足内检测器通过性要求。\\n（五）设计中应充分考虑城市、乡镇的发展规划对管道的影响。\\n（六）科学判断管道内外腐蚀环境，采取合理可行的腐蚀防护控制方法。\\n（七）分析腐蚀防控因素，在多方案技术经济比选的基础上，合理确定管道材质。\\n\\\"\\n[context 1 end]\n",
    "[context 2 begin]\\n      \\\"title\\\": \\\"a3178x1tmk1s:a35gf1ubjqio:a35jsqozp9mo:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则-20170707.docx\\\",\\n      \\\"content\\\": \\\"3.3 Ⅲ类管道检测评价策略\\n3.3.1高后果区识别和风险评价\\n高后果区识别推荐以管网为单元，开展区域高后果区识别，按照第4.3节要求执行。\\n风险评价推荐采用定性风险评价方法，按照第5.1节执行。\\n3.3.2检测评价\\n1）内腐蚀检测\\n对管道沿线的腐蚀敏感点进行开挖抽查，参照第6.3.2节预测腐蚀敏感点。\\n2）外腐蚀检测\\n开展防腐层检测，按照第6.2.4节执行；有阴极保护的管道，开展阴极保护参数测试，按照第6.2.5节执行；同时开展开挖直接检测，按照第6.2.6节执行。\\n3）压力试验\\n不开展内、外腐蚀检测的管道可进行压力试验，按照第6.4节要求执行。\\n3.3.3管道修复\\n管道修复按照第7章要求执行。\\n4 高后果区识别\\n\\\"\\n[context 2 end]\n",
    "[context 3 begin]\\n      \\\"title\\\": \\\"a3178x1tmk1s:a32ocpjitf5s:a359z4bkk6ww:2.中国石油天然气股份有限公司油田集输管道检测评价及修复技术导则.docx\\\",\\n      \\\"content\\\": \\\"4.1 集输油管道高后果区识别\\n管道经过区域符合如下任何一条的区域为高后果区：\\n1）管道经过的四级地区；\\n2）管道经过的三级地区；\\n3）管道两侧各200m内有聚居户数在50户或以上的村庄、乡镇等；\\n4）管道两侧各50m内有高速公路、国道、省道、铁路及易燃易爆场所等；\\n5）管道两侧各200m内有湿地、森林、河口等国家自然保护地区；\\n6）管道两侧各200m内有水源、河流、大中型水库。\\n随着管道周边人口和环境的变化，高后果区的位置和范围也会随着改变。高后果区识别流程见图4-1。\\n图4-1 管道高后果区识别工作流程图\\n1）资料收集\\n包括管道名称，管道规格，管道设计压力（MPa），管道最大允许操作压力（MAOP）（表压）（MPa）及能反映管道走向的资料（如：管道测绘图，管道带状图等）。\\n2）管道地区等级划分\\n按管道沿线居民户数和（或）建筑物的密集程度等划分等级，分为四个地区等级，划分标准执行GB50253-2014《输油管道工程设计规范》附录F。\\n3）村庄、乡镇统计\\n统计油田集输管道两侧各200m内有村庄、乡镇聚居户数等。\\n4）道路、易燃易爆场所统计\\n统计油田集输管道两侧各50m内有高速公路、国道、省道、铁路及易燃易爆场所等；\\n5）国家自然保护地区、水源地统计\\n统计油田集输管道两侧各200m内有湿地、森林、河口等国家自然保护地区；统计油田集输管道两侧各200m内有水源、河流、大中型水库。\\n6）高后果区识别\\n高后果区识别应由熟悉管道沿线情况的人员进行。\\n高后果区识别结果可包括高后果区管段起止点，长度，管段描述，减缓措施等内容。\\n\\\"\\n[context 3 end]\n",
    "\"\"\"\n",
    "\n",
    "cite_extract_prompt = f\"\"\"\n",
    "## 以下内容是基于用户请求的搜索结果\n",
    "[Contexts Start]\n",
    "{context}\n",
    "[Context End]\n",
    "\n",
    "## 目标\n",
    "在我给你的搜索结果中，每个结果都是[context X begin]..[context X end]格式的，X代表每篇文章的数字索引。请在适当的情况下在句子未尾引用上下文。\n",
    "请按照引用编号[citation:X]的格式在答案中对应部分引用上下文。\n",
    "如果一句话源自多个上下文，请列出所有相关的引用编号，例如[citation:3][citation:5]，切记不要将引用集中在最后返回引用编号，而是在答案对应部分列出。\n",
    "\n",
    "在回答时，请注意以下几点:\n",
    "- 并非搜索结果的所有内容都与用户的问题密切相关，你需要结合问题，对搜索结果进行甄别、筛选。\n",
    "- 对于列举类的问题(如列举所有航班信息)，尽量将答案控制在10个要点以内，并告诉用户可以查看搜索来源、获得完整信息。优先提供信息完整、最相关的列举项;如非必要，不要主动告诉用户搜索结果未提供的内容。\n",
    "- 对于创作类的问题(如写论文)，请务必在正文的段落中引用对应的参考编号，例如[citation:3][citation:5]，不能只在文章未尾引用。你需要解读并概括用户的题目要求，选择合适的格式，充分利用搜索结果并抽取重要信息，生成符合用户要求、极具思想深度、富有创造力与专业性的答案。你的创作篇幅需要尽可能延长，对于每一个要点的论述要推测用户的意图，给出尽可能多角度的回答要点，且务必信息量大、论述详尽。\n",
    "- 如果回答很长，请尽量结构化、分段落总结。如果需要分点作答，尽量控制在5个点以内，并合并相关的内容。\n",
    "- 你的回答应该综合多个相关内容来回答，不能重复引用同一个内容。\n",
    "- 除非用户要求，否则你回答的语言需要和用户提问的语言保持一致。\n",
    "\n",
    "## 用户请求\n",
    "{query}\n",
    "\n",
    "\"\"\"\n",
    "\n",
    "llm(\"\", cite_extract_prompt)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
